import JSEncrypt from 'jsencrypt';

/**
 * 使用 RSA 公钥加密密码
 * @param password 要加密的密码
 * @param publicKey RSA 公钥（PEM 格式）
 * @returns 加密后的密码字符串，如果加密失败则返回 null
 */
export const encryptPassword = (password: string, publicKey: string): string | null => {
  try {
    // 创建 JSEncrypt 实例
    const encrypt = new JSEncrypt();
    
    // 设置公钥
    encrypt.setPublicKey(publicKey);
    
    // 加密密码
    const encrypted = encrypt.encrypt(password);
    
    // 检查加密是否成功
    if (encrypted === false) {
      console.error('密码加密失败');
      return null;
    }
    
    return encrypted;
  } catch (error) {
    console.error('加密过程中发生错误:', error);
    return null;
  }
};

/**
 * 使用 RSA 私钥解密密码
 * @param encryptedPassword 加密后的密码
 * @param privateKey RSA 私钥（PEM 格式）
 * @returns 解密后的密码字符串，如果解密失败则返回 null
 */
export const decryptPassword = (encryptedPassword: string, privateKey: string): string | null => {
  try {
    // 创建 JSEncrypt 实例
    const decrypt = new JSEncrypt();
    
    // 设置私钥
    decrypt.setPrivateKey(privateKey);
    
    // 解密密码
    const decrypted = decrypt.decrypt(encryptedPassword);
    
    // 检查解密是否成功
    if (decrypted === false) {
      console.error('密码解密失败');
      return null;
    }
    
    return decrypted;
  } catch (error) {
    console.error('解密过程中发生错误:', error);
    return null;
  }
};
